﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ITD_VAPCF.NganQuy.GUI
{
    public partial class frmTT21_Kiem_Ke_Loai_Tien : DevComponents.DotNetBar.Office2007Form 
    {
        private DataTable dtTienKiemKe;
        private DataTable dtTienGia;
        private BLL.Tt21_Tien_GiaBLL objTt21_Tien_GiaBLL;
        private BLL.Tt21_Kiem_Ke_TienBLL objTt21_Kiem_Ke_TienBLL;

        public frmTT21_Kiem_Ke_Loai_Tien()
        {
            InitializeComponent();
            CreateConfigGrid();
            

            objTt21_Tien_GiaBLL = new ITD_VAPCF.NganQuy.BLL.Tt21_Tien_GiaBLL(Common.GlobalVar.g_strConnectionMsSql);
            objTt21_Kiem_Ke_TienBLL = new ITD_VAPCF.NganQuy.BLL.Tt21_Kiem_Ke_TienBLL(Common.GlobalVar.g_strConnectionMsSql);

            
        }
        private void CreateConfigGrid()
        {             
            gdvTienMat.ModeColorRow = 1;
            //gdvTienMat.SetColorRow(System.Drawing.Color.AliceBlue);
            gdvTienMat.RowTemplate.Height = 30;
            gdvTienMat.SelectionMode = DataGridViewSelectionMode.CellSelect;
            gdvTienMat.AddColumns("TextBox", "loai_tien", "Loại tiền", 100, true, true, "ML", "");
            gdvTienMat.AddColumns("TextBox", "ton_dau_ky", "Tồn đầu kỳ", 70, true, false, "MR", "### ### ###");

            gdvTienMat.AddColumns("TextBox", "thu_1", "Thu từ NHNN", 60, true, false , "MR", "### ### ### ###");
            gdvTienMat.AddColumns("TextBox", "thu_2", "Thu nội bộ", 60, true, false , "MR", "### ### ### ###");
            gdvTienMat.AddColumns("TextBox", "thu_3", "Thu từ TCTD khác", 60, true, false, "MR", "### ### ### ###");
            gdvTienMat.AddColumns("TextBox", "thu_4", "Thu từ lưu thông", 60, true, false, "MR", "### ### ### ###");
            gdvTienMat.AddColumns("TextBox", "thu_5", "Thu đổi loại", 60, true, false, "MR", "### ### ### ###");
            gdvTienMat.AddColumns("TextBox", "thu_9", "Tổng thu", 70, true, true, "MR", "### ### ### ###");

            gdvTienMat.AddColumns("TextBox", "chi_1", "Chi nộp NHNN", 80, true, false , "MR", "### ### ### ###");
            gdvTienMat.AddColumns("TextBox", "chi_2", "Chi nội bộ", 80, true, false , "MR", "### ### ### ###");
            gdvTienMat.AddColumns("TextBox", "chi_3", "Chi từ TCTD khác", 80, true, false , "MR", "### ### ### ###");
            gdvTienMat.AddColumns("TextBox", "chi_4", "Chi cho lưu thông", 80, true, false , "MR", "### ### ### ###");
            gdvTienMat.AddColumns("TextBox", "chi_5", "Chi đổi loại", 80, true, false , "MR", "### ### ### ###");
            gdvTienMat.AddColumns("TextBox", "chi_9", "Tổng chi", 90, true, true, "MR", "### ### ### ###");

            gdvTienMat.AddColumns("TextBox", "ton_cuoi_ky", "Tồn cuối kỳ", 90, true, true, "MR", "### ### ###");

            gdvTienMat.AddColumns("TextBox", "loai_tien_id", "Mã", 1, false, true, "ML", "");
            gdvTienMat.AddColumns("TextBox", "ma_id", "Mã", 1, false, true, "ML", "");

            gdvTienMat.Columns["thu_9"].DefaultCellStyle.BackColor = Color.Gray; 
            gdvTienMat.Columns["thu_9"].DefaultCellStyle.Font = new Font("Arial", 12, FontStyle.Bold);
            gdvTienMat.Columns["chi_9"].DefaultCellStyle.BackColor = Color.Gray;
            gdvTienMat.Columns["chi_9"].DefaultCellStyle.Font = new Font("Arial", 12, FontStyle.Bold);
            gdvTienMat.Columns["ton_cuoi_ky"].DefaultCellStyle.BackColor = Color.Gray;
            gdvTienMat.Columns["ton_cuoi_ky"].DefaultCellStyle.Font = new Font("Arial", 12, FontStyle.Bold);



            gdvTienGia.ModeColorRow = 1;
            //gdvTienGia.SetColorRow(System.Drawing.Color.AliceBlue);
            gdvTienGia.RowTemplate.Height = 30;
            gdvTienGia.SelectionMode = DataGridViewSelectionMode.CellSelect;
            gdvTienGia.AddColumns("TextBox", "loai_tien", "Loại tiền", 120, true, true, "ML", "");
            gdvTienGia.AddColumns("TextBox", "ton_dau_ky", "Tồn đầu ngày", 150, true, false , "MR", "### ### ###");
            gdvTienGia.AddColumns("TextBox", "nhap_trong_ky", "Nhập trong ngày", 150, true, false , "MR", "### ### ### ###");
            gdvTienGia.AddColumns("TextBox", "xuat_trong_ky", "Xuất trong ngày", 150, true, false , "MR", "### ### ### ###");
            gdvTienGia.AddColumns("TextBox", "ton_cuoi_ky", "Tồn cuối ngày", 150, true, true, "MR", "### ### ### ###");
            
            gdvTienGia.AddColumns("TextBox", "ma_id", "Mã", 1, false, true, "ML", "");
            gdvTienGia.AddColumns("TextBox", "loai_tien_id", "Mã", 1, false, true, "ML", ""); 

            gdvTienGia.Columns["ton_cuoi_ky"].DefaultCellStyle.BackColor = Color.Gray;
            gdvTienGia.Columns["ton_cuoi_ky"].DefaultCellStyle.Font = new Font("Arial", 12, FontStyle.Bold);

        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                //Kiem tra xem co đúng số liệu khoong
                bool IsValid = false ;
                //Tất cả các số dư cuối ngày đều phải là số >=0
                for (int i = 0; i < dtTienKiemKe.Rows.Count; i++)
                {
                    if (Common.ConvertData.ToDouble(dtTienKiemKe.Rows[i]["ton_cuoi_ky"]) < 0)
                    {
                        Common.Messages.ShowError("Loại tiền tồn không thể có số dư < 0. Kiểm tra lại số liệu kiểm kê tiền tại quỹ..");
                        IsValid =true ;
                        break;
                    }
                }
                for (int i = 0; i < dtTienGia.Rows.Count; i++)
                {
                    if (Common.ConvertData.ToDouble(dtTienGia.Rows[i]["ton_cuoi_ky"]) < 0)
                    {
                        Common.Messages.ShowError("Loại tiền tồn tiền giả không thể có số dư < 0. Kiểm tra lại số liệu kiểm kê tiền tại quỹ..");
                        IsValid = true ;
                        break;
                    }
                }
                if (IsValid == true)  return;

                ///Ghi 
                objTt21_Tien_GiaBLL.Save_Tien_Gia(dtTienGia, ngay.Text.Trim());

                objTt21_Kiem_Ke_TienBLL.Save_Kiem_Ke_Tien(dtTienKiemKe, ngay.Text.Trim());  

                Common.Messages.ShowDialog("Chương trình đã ghi nhận thành công kiểm kê loại tiền cuối ngày..");
            }
            catch (Exception ex)
            {
                Common.Messages.ShowError(ex.ToString());
            }
        }

        private void ngay_ValueChanged(object sender, EventArgs e)
        {
            Load_Tien_Kiem_Ke(ngay.Text);
        }

        private void Load_Tien_Kiem_Ke(string Ngay)
        {
            try
            {
                dtTienGia = objTt21_Tien_GiaBLL.Get_Tien_Gia_By_Date(Ngay);
                gdvTienGia.DataSource = dtTienGia;
                gdvTienGia.Refresh();

                dtTienKiemKe = objTt21_Kiem_Ke_TienBLL.Get_Kiem_Ke_Tien_By_Date(Ngay);
                gdvTienMat.DataSource = dtTienKiemKe;
                gdvTienMat.Refresh(); 
            }
            catch (Exception ex)
            {
                Common.Messages.ShowError(ex.ToString());
            }
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void gdvTienMat_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                gdvTienMat.EndEdit();

                string colname = gdvTienMat.Columns[e.ColumnIndex].Name;
                double dThu = 0;
                double dChi = 0;
                double dTonDK = 0;

                if (gdvTienMat.Rows[e.RowIndex].Cells["loai_tien_id"].Value.ToString().Trim().Length  < 3)
                {
                    gdvTienMat.Rows[e.RowIndex].Cells["thu_1"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["thu_2"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["thu_3"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["thu_4"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["thu_5"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["thu_9"].Value = 0;

                    gdvTienMat.Rows[e.RowIndex].Cells["chi_1"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["chi_2"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["chi_3"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["chi_4"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["chi_5"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["chi_9"].Value = 0;

                    gdvTienMat.Rows[e.RowIndex].Cells["ton_dau_ky"].Value = 0;
                    gdvTienMat.Rows[e.RowIndex].Cells["ton_cuoi_ky"].Value = 0;
                    return;
                }



                switch (colname)
                {
                    case "thu_1": //Chi cho phep nhap sua So luong hang
                    case "thu_2":
                    case "thu_3":
                    case "thu_4":
                    case "thu_5":
                        dThu =      Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["thu_1"].Value) +
                                         Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["thu_2"].Value) +
                                         Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["thu_3"].Value) +
                                         Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["thu_4"].Value) +
                                         Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["thu_5"].Value);

                        gdvTienMat.Rows[e.RowIndex].Cells["thu_9"].Value = dThu;                        
                        break;


                    case "chi_1": //Chi cho phep nhap sua So luong hang
                    case "chi_2":
                    case "chi_3":
                    case "chi_4":
                    case "chi_5":
                        dChi = Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["chi_1"].Value) +
                                         Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["chi_2"].Value) +
                                         Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["chi_3"].Value) +
                                         Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["chi_4"].Value) +
                                         Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["chi_5"].Value);

                        gdvTienMat.Rows[e.RowIndex].Cells["chi_9"].Value = dChi;
                        break;
                }
                dThu = Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["thu_9"].Value);
                dChi = Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["chi_9"].Value);
                dTonDK = Common.ConvertData.ToDouble(gdvTienMat.Rows[e.RowIndex].Cells["ton_dau_ky"].Value);
                gdvTienMat.Rows[e.RowIndex].Cells["ton_cuoi_ky"].Value = dTonDK + dThu - dChi;

                dtTienKiemKe.AcceptChanges();
            }
            catch (Exception ex)
            {
                Common.LogError.WriteLog(ex, this.Name, "gdvChiTiet_CellEndEdit");
                Common.Messages.ShowDialog("Lỗi : " + ex.ToString());
            }
        }

        private void gdvTienGia_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                gdvTienGia.EndEdit();

                string colname = gdvTienGia.Columns[e.ColumnIndex].Name;
                double dThu = 0;
                double dChi = 0;
                double dTonDK = 0;

                if (gdvTienGia.Rows[e.RowIndex].Cells["loai_tien_id"].Value.ToString().Trim().Length < 3)
                {
                    gdvTienGia.Rows[e.RowIndex].Cells["nhap_trong_ky"].Value = 0;
                    gdvTienGia.Rows[e.RowIndex].Cells["xuat_trong_ky"].Value = 0;
                    gdvTienGia.Rows[e.RowIndex].Cells["ton_dau_ky"].Value = 0;
                    gdvTienGia.Rows[e.RowIndex].Cells["ton_cuoi_ky"].Value = 0;
                    return;
                }


                switch (colname)
                {
                    case "nhap_trong_ky": //Chi cho phep nhap sua So luong hang
                    case "xuat_trong_ky":
                    case "ton_dau_ky":

                        dThu = Common.ConvertData.ToDouble(gdvTienGia.Rows[e.RowIndex].Cells["nhap_trong_ky"].Value);
                        dChi = Common.ConvertData.ToDouble(gdvTienGia.Rows[e.RowIndex].Cells["xuat_trong_ky"].Value);
                        dTonDK = Common.ConvertData.ToDouble(gdvTienGia.Rows[e.RowIndex].Cells["ton_dau_ky"].Value);
                        gdvTienGia.Rows[e.RowIndex].Cells["ton_cuoi_ky"].Value = dTonDK + dThu - dChi;
                        break;                   
                }               
                dtTienGia.AcceptChanges();
            }
            catch (Exception ex)
            {
                Common.LogError.WriteLog(ex, this.Name, "gdvChiTiet_CellEndEdit");
                Common.Messages.ShowDialog("Lỗi : " + ex.ToString());
            }
        }

        private void frmTT21_Kiem_Ke_Loai_Tien_Load(object sender, EventArgs e)
        {
            ngay.Value = Sys_Infor_SectionWorking.g_WorkingDate;
            Load_Tien_Kiem_Ke(ngay.Text);
        }

    }
}
